home *** CD-ROM | disk | FTP | other *** search
-
- ******************************************************************************
- *
- * Flowerpower's DeBox Datatype
- *
- * Written by Christian Buchner and David N. Junod
- *
- ******************************************************************************
- * AsmSupport.asm
- *
-
- SECTION Code,CODE
-
-
- * _XOR_Memory ****************************************************************
-
- XDEF _XOR_Memory
-
- _XOR_Memory MOVEQ #12,D1
- CMP.L D1,D0
- BCS.S lbC000930
- MOVE.L A0,D1
- BTST #0,D1
- BEQ.S lbC0008EC
- MOVE.B (A1)+,D1
- EOR.B D1,(A0)+
- SUBQ.L #1,D0
- lbC0008EC MOVE.L A1,D1
- BTST #0,D1
- BNE.S lbC000930
- MOVE.L D0,D1
- ANDI.W #3,D1
- MOVE.W D1,-(SP)
- MOVEM.L D2-D7,-(SP)
- MOVEQ #$18,D1
- BRA.S lbC000916
- lbC000904 MOVEM.L (A1)+,D2-D7
- EOR.L D2,(A0)+
- EOR.L D3,(A0)+
- EOR.L D4,(A0)+
- EOR.L D5,(A0)+
- EOR.L D6,(A0)+
- EOR.L D7,(A0)+
- SUB.L D1,D0
- lbC000916 CMP.L D1,D0
- BCC.S lbC000904
- MOVEM.L (SP)+,D2-D7
- LSR.L #2,D0
- BEQ.S lbC00092A
- lbC000922 MOVE.L (A1)+,D1
- EOR.L D1,(A0)+
- SUBQ.L #1,D0
- BNE.S lbC000922
- lbC00092A MOVE.W (SP)+,D0
- BEQ.S lbC00093C
- BRA.S lbC000934
- lbC000930 TST.L D0
- BEQ.S lbC00093C
- lbC000934 MOVE.B (A1)+,D1
- EOR.B D1,(A0)+
- SUBQ.L #1,D0
- BNE.S lbC000934
- lbC00093C RTS
-
-
- * _Method_1 ******************************************************************
-
- XDEF _Method_1
-
- lbC0005CC SUBQ.L #1,D7
- BLT.S lbC0005E2
- ADDQ.L #1,D5
- CMP.L D6,D5
- BGT.S lbC0005E6
- MOVE.B (A1)+,(A3)+
- CMPI.B #7,D4
- BEQ.S lbC0005F0
- ADDQ.B #1,D4
- BRA.S lbC0005FA
- lbC0005E2 BRA.W lbC000666
- lbC0005E6 BRA.W lbC0005E6
-
- _Method_1 MOVEM.L D2-D7/A0-A4,-(SP)
- MOVEQ #0,D5
- lbC0005F0 SUBQ.L #1,D7
- BLT.W lbC000666
- MOVEQ #0,D4
- MOVE.B (A1)+,D3
- lbC0005FA BTST D4,D3
- BNE.S lbC0005CC
- SUBQ.L #2,D7
- BLT.S lbC000666
- MOVEQ #0,D0
- MOVEQ #0,D2
- MOVE.B (A1)+,D0
- MOVE.B (A1)+,D2
- MOVE.L D2,D1
- ANDI.B #15,D1
- ADDQ.W #3,D1
- ASL.W #4,D2
- CLR.B D2
- ADD.W D2,D0
- CMP.L D0,D5
- BLT.S lbC000662
- NEG.W D0
- LEA 0(A3,D0.W),A4
- ADD.L D1,D5
- CMP.L D6,D5
- BGT.S lbC000662
- ADD.L D1,D1
- NEG.L D1
- ; Seems the SAS-C assembler has got a bug
- *** JMP lbC000654(PC,D1.W)
- ; using DC.W instead
- DC.W $4EFB,$1026
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- MOVE.B (A4)+,(A3)+
- lbC000654 CMP.L D6,D5
- BEQ.S lbC000666
- CMPI.B #7,D4
- BEQ.S lbC0005F0
- ADDQ.B #1,D4
- BRA.S lbC0005FA
- lbC000662 MOVEQ #0,D0
- BRA.S lbC00066C
- lbC000666 CMP.L D5,D6
- BNE.S lbC000662
- MOVE.L D5,D0
- lbC00066C MOVEM.L (SP)+,D2-D7/A0-A4
- RTS
-
-
- * _Method_2 ******************************************************************
-
- XDEF _Method_2
-
- _Method_2 MOVEM.L D2-D7/A0-A5,-(SP)
- SUBQ.L #2,D7
- BLT.W lbC00071A
- MOVE.W (A1)+,D5
- MOVE.L A2,D3
- SUB.L A3,D3
- MOVE.L A3,D4
- ADDQ.L #1,D4
- MOVEA.L A3,A5
- ADDA.L D6,A5
- MOVEA.L A3,A4
- MOVE.W D5,D0
- ADDQ.W #1,D0
- ADDA.W D0,A4
- lbC000692 SUBQ.L #1,D7
- BLT.W lbC00071A
- MOVEQ #0,D2
- MOVE.B (A1)+,D2
- BEQ.S lbC0006C8
- BGT.S lbC0006F8
- NEG.B D2
- SUBQ.L #1,D7
- BLT.S lbC00071A
- MOVE.B (A1)+,D1
- SUBQ.L #1,D2
- BLT.S lbC00071A
- lbC0006AC MOVE.B D1,(A3)
- ADDA.W D5,A3
- CMPA.L A5,A3
- BCC.S lbC0006BA
- lbC0006B4 DBRA D2,lbC0006AC
- BRA.S lbC000692
- lbC0006BA MOVEA.L D4,A3
- ADDQ.L #1,D4
- CMPA.L D4,A4
- BNE.S lbC0006B4
- DBRA D2,lbC00071A
- BRA.S lbC00071E
- lbC0006C8 SUBQ.L #1,D7
- BLT.S lbC00071A
- MOVE.B (A1)+,D2
- MOVEA.L D3,A2
- ADDA.L A3,A2
- SUBQ.L #1,D2
- BLT.S lbC00071A
- lbC0006D6 MOVE.B (A2),(A3)
- ADDA.W D5,A3
- CMPA.L A5,A3
- BCC.S lbC0006E6
- ADDA.W D5,A2
- lbC0006E0 DBRA D2,lbC0006D6
- BRA.S lbC000692
- lbC0006E6 MOVEA.L D4,A3
- ADDQ.L #1,D4
- MOVEA.L D3,A2
- ADDA.L A3,A2
- CMPA.L D4,A4
- BNE.S lbC0006E0
- DBRA D2,lbC00071A
- BRA.S lbC00071E
- lbC0006F8 SUB.L D2,D7
- BLT.S lbC00071A
- SUBQ.W #1,D2
- lbC0006FE MOVE.B (A1)+,(A3)
- ADDA.W D5,A3
- CMPA.L A5,A3
- BCC.S lbC00070C
- lbC000706 DBRA D2,lbC0006FE
- BRA.S lbC000692
- lbC00070C MOVEA.L D4,A3
- ADDQ.L #1,D4
- CMPA.L D4,A4
- BNE.S lbC000706
- DBRA D2,lbC00071A
- BRA.S lbC00071E
- lbC00071A MOVEQ #0,D0
- BRA.S lbC000720
- lbC00071E MOVE.L D6,D0
- lbC000720 MOVEM.L (SP)+,D2-D7/A0-A5
- RTS
-
-
- * _Method_4 ******************************************************************
-
- XDEF _Method_4
-
- _Method_4 MOVEM.L D2-D7/A0-A5,-(SP)
- MOVEA.L D6,A4
- MOVEQ #0,D5
- lbC000832 SUBQ.L #1,D7
- BLT.W lbC0008C8
- MOVEQ #0,D4
- MOVE.B (A1)+,D3
- lbC00083C BTST D4,D3
- BNE.S lbC0008AA
- SUBQ.L #2,D7
- BLT.W lbC0008C8
- MOVEQ #0,D0
- MOVEQ #0,D2
- MOVE.B (A1)+,D0
- MOVE.B (A1)+,D2
- MOVE.L D2,D1
- ANDI.B #15,D1
- ADDQ.W #3,D1
- ASL.W #4,D2
- CLR.B D2
- ADD.W D2,D0
- SUB.L D1,D7
- BLT.S lbC0008C4
- CMP.L D0,D5
- BLT.S lbC0008C4
- NEG.W D0
- LEA 0(A3,D0.W),A5
- ADD.L D1,D5
- ADD.L D1,D5
- CMP.L A4,D5
- BGT.S lbC0008C4
- SUBQ.W #1,D1
- lbC000874 MOVE.B (A1)+,D0
- MOVE.B D0,D2
- ASR.B #4,D2
- MOVE.B (A5)+,D6
- SUB.B D2,D6
- MOVE.B D6,(A3)+
- BTST #3,D0
- BNE.S lbC00088C
- ANDI.B #15,D0
- BRA.S lbC000890
- lbC00088C ORI.B #$F0,D0
- lbC000890 MOVE.B (A5)+,D6
- SUB.B D0,D6
- MOVE.B D6,(A3)+
- DBRA D1,lbC000874
- CMP.L A4,D5
- BEQ.S lbC0008C8
- CMPI.B #7,D4
- BEQ.S lbC000832
- ADDQ.B #1,D4
- BRA.W lbC00083C
- lbC0008AA SUBQ.L #1,D7
- BLT.S lbC0008C8
- ADDQ.L #1,D5
- CMP.L A4,D5
- BGT.S lbC0008C4
- MOVE.B (A1)+,(A3)+
- CMPI.B #7,D4
- BEQ.W lbC000832
- ADDQ.B #1,D4
- BRA.W lbC00083C
- lbC0008C4 MOVEQ #0,D0
- BRA.S lbC0008CE
- lbC0008C8 CMP.L A4,D5
- BNE.S lbC0008C4
- MOVE.L D5,D0
- lbC0008CE MOVEM.L (SP)+,D2-D7/A0-A5
- RTS
-
-
- * _Method_5 ******************************************************************
-
- XDEF _Method_5
-
- _Method_5 MOVEM.L D3-D7/A0-A5,-(SP)
- SUBQ.L #3,D7
- BLT.S lbC00081A
- MOVE.W (A1)+,D5
- MOVE.B (A1)+,D3
- MOVE.L A3,D4
- ADDQ.L #1,D4
- MOVEA.L A3,A5
- ADDA.L D6,A5
- MOVEA.L A3,A4
- MOVE.W D5,D0
- ADDQ.W #1,D0
- ADDA.W D0,A4
- lbC0007D0 SUBQ.L #1,D7
- BLT.W lbC00081A
- MOVE.B (A1)+,D0
- CMP.B D0,D3
- BEQ.S lbC0007EE
- MOVE.B D0,(A3)
- ADDA.W D5,A3
- CMPA.L A5,A3
- BCS.S lbC0007D0
- MOVEA.L D4,A3
- ADDQ.L #1,D4
- CMPA.L D4,A4
- BNE.S lbC0007D0
- BRA.S lbC00081E
- lbC0007EE SUBQ.L #2,D7
- BLT.W lbC00081A
- MOVEQ #0,D1
- MOVE.B (A1)+,D1
- BEQ.S lbC00081A
- SUBQ.W #1,D1
- MOVE.B (A1)+,D0
- lbC0007FE MOVE.B D0,(A3)
- ADDA.W D5,A3
- CMPA.L A5,A3
- BCC.S lbC00080C
- lbC000806 DBRA D1,lbC0007FE
- BRA.S lbC0007D0
- lbC00080C MOVEA.L D4,A3
- ADDQ.L #1,D4
- CMPA.L D4,A4
- BNE.S lbC000806
- DBRA D1,lbC00081A
- BRA.S lbC00081E
- lbC00081A MOVEQ #0,D0
- BRA.S lbC000824
- lbC00081E TST.L D7
- BNE.S lbC00081A
- MOVE.L D6,D0
- lbC000824 MOVEM.L (SP)+,D3-D7/A0-A5
- RTS
-
-
- ******************************************************************************
-
- END
-